package com.springboot.mqtt.service;

import com.springboot.mqtt.model.MqttMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * MQTT消息监听器
 * 
 * <p>通过Spring事件机制接收MQTT消息，可以添加自定义的业务逻辑来处理接收到的消息。
 * 可以创建多个不同的监听器来处理不同主题或类型的消息。</p>
 * 
 * @author nehc
 * @version 1.0.0
 * @since 2023-04-01
 */
@Slf4j
@Component
public class MqttMessageListener {
    
    /**
     * 处理接收到的MQTT消息
     * 
     * @param message MQTT消息对象
     */
    @EventListener
    public void handleMqttMessage(MqttMessage message) {
        log.info("收到MQTT消息事件: 主题={}, 消息内容={}", message.getTopic(), message.getPayload());
        
        // TODO: 添加自定义的业务逻辑来处理消息
        // 例如：解析JSON消息内容，更新数据库，触发其他操作等
        
        // 可以根据主题进行不同的处理
        if (message.getTopic().startsWith("device/")) {
            handleDeviceMessage(message);
        } else if (message.getTopic().startsWith("alert/")) {
            handleAlertMessage(message);
        }
    }
    
    /**
     * 处理设备相关消息
     * 
     * @param message MQTT消息
     */
    private void handleDeviceMessage(MqttMessage message) {
        // 设备消息处理逻辑
        log.debug("处理设备消息: {}", message.getPayload());
    }
    
    /**
     * 处理告警相关消息
     * 
     * @param message MQTT消息
     */
    private void handleAlertMessage(MqttMessage message) {
        // 告警消息处理逻辑
        log.debug("处理告警消息: {}", message.getPayload());
    }
} 